Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / tests / backend / test_lxmf_sieve.py

Displaying Raw • Download


tests/backend/test_lxmf_sieve.py v4.7.2-rc.6 (36474762) Text, 7.01 KB

T8b949e# SPDX-License-Identifier: 0BSD

Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787lxmf_sieve Tff7b72import Tb4b4b4(
Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4,
Te6edf3normalize_lxmf_sieve_filtersTb4b4b4,
Te6edf3parse_lxmf_sieve_filters_jsonTb4b4b4,
Tb4b4b4)


Tff7b72def Td2a8fftest_parse_empty_and_invalidTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3parse_lxmf_sieve_filters_jsonTb4b4b4(Tff7b72NoneTb4b4b4) Tff7b72== Tb4b4b4[Tb4b4b4]
Tff7b72assert Te6edf3parse_lxmf_sieve_filters_jsonTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4) Tff7b72== Tb4b4b4[Tb4b4b4]
Tff7b72assert Te6edf3parse_lxmf_sieve_filters_jsonTb4b4b4(Ta5d6ff"Ta5d6ffnot jsonTa5d6ff"Tb4b4b4) Tff7b72== Tb4b4b4[Tb4b4b4]
Tff7b72assert Te6edf3parse_lxmf_sieve_filters_jsonTb4b4b4(Ta5d6ff"Tffd700{}Ta5d6ff"Tb4b4b4) Tff7b72== Tb4b4b4[Tb4b4b4]


Tff7b72def Td2a8fftest_normalize_drops_bad_and_keeps_goodTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3raw Tff7b72= Tb4b4b4[
Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffnopeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffxTa5d6ff"Tb4b4b4]Tb4b4b4}Tb4b4b4,
Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffignoreTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffspamTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffenabledTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4, Ta5d6ff"Ta5d6ffidTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffa1Ta5d6ff"Tb4b4b4}Tb4b4b4,
Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fffolderTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffworkTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6fffolder_idTa5d6ff"Tb4b4b4: T79c0ff3Tb4b4b4, Ta5d6ff"Ta5d6ffidTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffb2Ta5d6ff"Tb4b4b4}Tb4b4b4,
Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fffolderTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffbadTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6fffolder_idTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffnanTa5d6ff"Tb4b4b4}Tb4b4b4,
Tb4b4b4]
Te6edf3out Tff7b72= Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(Te6edf3rawTb4b4b4)
Tff7b72assert Tffa657lenTb4b4b4(Te6edf3outTb4b4b4) Tff7b72== T79c0ff2
Tff7b72assert Te6edf3outTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffignoreTa5d6ff"
Tff7b72assert Te6edf3outTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4] Tff7b72== Tb4b4b4[Ta5d6ff"Ta5d6ffspamTa5d6ff"Tb4b4b4]
Tff7b72assert Te6edf3outTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffscopeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffeveryoneTa5d6ff"
Tff7b72assert Te6edf3outTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffmatch_peer_fieldsTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3outTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffmatch_messageTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72False
Tff7b72assert Te6edf3outTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffmatch_modeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffsubstringTa5d6ff"
Tff7b72assert Te6edf3outTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6fffolderTa5d6ff"
Tff7b72assert Te6edf3outTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fffolder_idTa5d6ff"Tb4b4b4] Tff7b72== T79c0ff3
Tff7b72assert Te6edf3outTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffscopeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffeveryoneTa5d6ff"


Tff7b72def Td2a8fftest_normalize_drops_when_both_match_targets_disabledTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Tb4b4b4(
Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(
Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffignoreTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffaTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffmatch_peer_fieldsTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Ta5d6ff"Ta5d6ffmatch_messageTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Tb4b4b4)
Tff7b72== Tb4b4b4[Tb4b4b4]
Tb4b4b4)


Tff7b72def Td2a8fftest_first_match_respects_order_and_enabledTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3rules Tff7b72= Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(
Tb4b4b4[
Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffignoreTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6fffooTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffenabledTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4}Tb4b4b4,
Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffhideTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6fffooTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffenabledTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Tb4b4b4)
Te6edf3m Tff7b72= Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(Te6edf3rulesTb4b4b4, Ta5d6ff"Ta5d6ffMr foo barTa5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3mTb4b4b4[Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffignoreTa5d6ff"

Te6edf3rules2 Tff7b72= Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(
Tb4b4b4[
Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffignoreTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6fffooTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffenabledTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4}Tb4b4b4,
Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffblockTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6fffooTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffenabledTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Tb4b4b4)
Te6edf3m2 Tff7b72= Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(Te6edf3rules2Tb4b4b4, Ta5d6ff"Ta5d6ffMr foo barTa5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3m2Tb4b4b4[Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffhideTa5d6ff"


Tff7b72def Td2a8fftest_legacy_block_action_normalizes_to_hideTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3rules Tff7b72= Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(Tb4b4b4[Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffblockTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffzTa5d6ff"Tb4b4b4]Tb4b4b4}Tb4b4b4]Tb4b4b4)
Tff7b72assert Te6edf3rulesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffhideTa5d6ff"


Tff7b72def Td2a8fftest_case_insensitive_substringTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3rules Tff7b72= Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(Tb4b4b4[Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffhideTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffSpAmTa5d6ff"Tb4b4b4]Tb4b4b4}Tb4b4b4]Tb4b4b4)
Tff7b72assert Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(Te6edf3rulesTb4b4b4, Ta5d6ff"Ta5d6ffuser spammerTa5d6ff"Tb4b4b4)Tb4b4b4[Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffhideTa5d6ff"
Tff7b72assert Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(Te6edf3rulesTb4b4b4, Ta5d6ff"Ta5d6ffUSERTa5d6ff"Tb4b4b4) Tff7b72is Tff7b72None


Tff7b72def Td2a8fftest_parse_json_roundtripTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3s Tff7b72= Ta5d6ff'Ta5d6ff[Ta5d6ff{Ta5d6ff"Ta5d6ffidTa5d6ff"Ta5d6ff:Ta5d6ff"Ta5d6ff1Ta5d6ff"Ta5d6ff,Ta5d6ff"Ta5d6ffenabledTa5d6ff"Ta5d6ff:true,Ta5d6ff"Ta5d6fftermsTa5d6ff"Ta5d6ff:[Ta5d6ff"Ta5d6ffaTa5d6ff"Ta5d6ff],Ta5d6ff"Ta5d6ffactionTa5d6ff"Ta5d6ff:Ta5d6ff"Ta5d6ffignoreTa5d6ff"Ta5d6ff,Ta5d6ff"Ta5d6fffolder_idTa5d6ff"Ta5d6ff:null}]Ta5d6ff'
Te6edf3got Tff7b72= Te6edf3parse_lxmf_sieve_filters_jsonTb4b4b4(Te6edf3sTb4b4b4)
Tff7b72assert Tffa657lenTb4b4b4(Te6edf3gotTb4b4b4) Tff7b72== T79c0ff1
Tff7b72assert Te6edf3gotTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4] Tff7b72== Tb4b4b4[Ta5d6ff"Ta5d6ffaTa5d6ff"Tb4b4b4]
Tff7b72assert Te6edf3gotTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffscopeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffeveryoneTa5d6ff"


Tff7b72def Td2a8fftest_normalize_preserves_scopeTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3out Tff7b72= Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(
Tb4b4b4[
Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffignoreTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffxTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffscopeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcontactsTa5d6ff"Tb4b4b4}Tb4b4b4,
Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffhideTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffyTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffscopeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffnon_contactsTa5d6ff"Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3outTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffscopeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffcontactsTa5d6ff"
Tff7b72assert Te6edf3outTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffscopeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffnon_contactsTa5d6ff"


Tff7b72def Td2a8fftest_normalize_invalid_scope_becomes_everyoneTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3out Tff7b72= Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(
Tb4b4b4[Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffignoreTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffaTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffscopeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffunknownTa5d6ff"Tb4b4b4}Tb4b4b4]Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3outTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffscopeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffeveryoneTa5d6ff"


Tff7b72def Td2a8fftest_first_match_scope_contactsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3rules Tff7b72= Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(
Tb4b4b4[Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffhideTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6fffooTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffscopeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcontactsTa5d6ff"Tb4b4b4}Tb4b4b4]Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(Te6edf3rulesTb4b4b4, Ta5d6ff"Ta5d6ffMr fooTa5d6ff"Tb4b4b4, Te6edf3is_contactTff7b72=Tff7b72FalseTb4b4b4) Tff7b72is Tff7b72None
Tff7b72assert Tb4b4b4(
Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(Te6edf3rulesTb4b4b4, Ta5d6ff"Ta5d6ffMr fooTa5d6ff"Tb4b4b4, Te6edf3is_contactTff7b72=Tff7b72TrueTb4b4b4)Tb4b4b4[Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4]
Tff7b72== Ta5d6ff"Ta5d6ffhideTa5d6ff"
Tb4b4b4)


Tff7b72def Td2a8fftest_first_match_scope_non_contactsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3rules Tff7b72= Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(
Tb4b4b4[Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffignoreTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6fffooTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffscopeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffnon_contactsTa5d6ff"Tb4b4b4}Tb4b4b4]Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(Te6edf3rulesTb4b4b4, Ta5d6ff"Ta5d6fffoo barTa5d6ff"Tb4b4b4, Te6edf3is_contactTff7b72=Tff7b72TrueTb4b4b4) Tff7b72is Tff7b72None
Tff7b72assert Tb4b4b4(
Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(Te6edf3rulesTb4b4b4, Ta5d6ff"Ta5d6fffoo barTa5d6ff"Tb4b4b4, Te6edf3is_contactTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4[Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4]
Tff7b72== Ta5d6ff"Ta5d6ffignoreTa5d6ff"
Tb4b4b4)


Tff7b72def Td2a8fftest_order_skips_non_matching_scopeTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3rules Tff7b72= Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(
Tb4b4b4[
Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffignoreTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffspamTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffscopeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcontactsTa5d6ff"Tb4b4b4}Tb4b4b4,
Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffhideTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffspamTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffscopeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeveryoneTa5d6ff"Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Tb4b4b4)
Te6edf3r Tff7b72= Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(Te6edf3rulesTb4b4b4, Ta5d6ff"Ta5d6ffspam hereTa5d6ff"Tb4b4b4, Te6edf3is_contactTff7b72=Tff7b72FalseTb4b4b4)
Tff7b72assert Te6edf3rTb4b4b4[Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffhideTa5d6ff"


Tff7b72def Td2a8fftest_regex_invalid_droppedTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Tb4b4b4(
Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(
Tb4b4b4[Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffignoreTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ff(Ta5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffmatch_modeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffregexTa5d6ff"Tb4b4b4}Tb4b4b4]Tb4b4b4,
Tb4b4b4)
Tff7b72== Tb4b4b4[Tb4b4b4]
Tb4b4b4)


Tff7b72def Td2a8fftest_regex_matches_peerTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3rules Tff7b72= Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(
Tb4b4b4[Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffhideTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ffrTa5d6ff"Ta5d6fffooTa5d6ff\Ta5d6ffd+Ta5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffmatch_modeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffregexTa5d6ff"Tb4b4b4}Tb4b4b4]Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(Te6edf3rulesTb4b4b4, Ta5d6ff"Ta5d6ffx FOO99 yTa5d6ff"Tb4b4b4)Tb4b4b4[Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffhideTa5d6ff"
Tff7b72assert Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(Te6edf3rulesTb4b4b4, Ta5d6ff"Ta5d6ffx bar yTa5d6ff"Tb4b4b4) Tff7b72is Tff7b72None


Tff7b72def Td2a8fftest_message_only_matchTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3rules Tff7b72= Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(
Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffignoreTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffalertTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffmatch_peer_fieldsTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Ta5d6ff"Ta5d6ffmatch_messageTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Tb4b4b4)
Tff7b72assert Tb4b4b4(
Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(
Te6edf3rulesTb4b4b4,
Ta5d6ff"Ta5d6ffnothingTa5d6ff"Tb4b4b4,
Te6edf3message_haystackTff7b72=Ta5d6ff"Ta5d6ffmy alert hereTa5d6ff"Tb4b4b4,
Tb4b4b4)Tb4b4b4[Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4]
Tff7b72== Ta5d6ff"Ta5d6ffignoreTa5d6ff"
Tb4b4b4)
Tff7b72assert Tb4b4b4(
Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(
Te6edf3rulesTb4b4b4,
Ta5d6ff"Ta5d6ffalert in peerTa5d6ff"Tb4b4b4,
Te6edf3message_haystackTff7b72=Ta5d6ff"Ta5d6ffnoTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72is Tff7b72None
Tb4b4b4)


Tff7b72def Td2a8fftest_match_message_requires_message_haystackTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3rules Tff7b72= Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(
Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffignoreTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffaTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffmatch_peer_fieldsTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Ta5d6ff"Ta5d6ffmatch_messageTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(Te6edf3rulesTb4b4b4, Ta5d6ff"Ta5d6ffpeerTa5d6ff"Tb4b4b4, Te6edf3message_haystackTff7b72=Tff7b72NoneTb4b4b4) Tff7b72is Tff7b72None


Tff7b72def Td2a8fftest_peer_and_message_both_must_match_when_enabledTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3rules Tff7b72= Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(
Tb4b4b4[
Tb4b4b4{
Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffignoreTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffpeertermTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffmsgtermTa5d6ff"Tb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffmatch_peer_fieldsTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6ffmatch_messageTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Tb4b4b4)
Tff7b72assert Tb4b4b4(
Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(
Te6edf3rulesTb4b4b4,
Ta5d6ff"Ta5d6ffhas peerterm onlyTa5d6ff"Tb4b4b4,
Te6edf3message_haystackTff7b72=Ta5d6ff"Ta5d6ffnothingTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72is Tff7b72None
Tb4b4b4)
Tff7b72assert Tb4b4b4(
Te6edf3first_matching_lxmf_sieve_ruleTb4b4b4(
Te6edf3rulesTb4b4b4,
Ta5d6ff"Ta5d6ffhas peertermTa5d6ff"Tb4b4b4,
Te6edf3message_haystackTff7b72=Ta5d6ff"Ta5d6ffand msgterm hereTa5d6ff"Tb4b4b4,
Tb4b4b4)Tb4b4b4[Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4]
Tff7b72== Ta5d6ff"Ta5d6ffignoreTa5d6ff"
Tb4b4b4)


Tff7b72def Td2a8fftest_banish_action_normalizedTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3rules Tff7b72= Te6edf3normalize_lxmf_sieve_filtersTb4b4b4(Tb4b4b4[Tb4b4b4{Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffbanishTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftermsTa5d6ff"Tb4b4b4: Tb4b4b4[Ta5d6ff"Ta5d6ffxTa5d6ff"Tb4b4b4]Tb4b4b4}Tb4b4b4]Tb4b4b4)
Tff7b72assert Te6edf3rulesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffactionTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffbanishTa5d6ff"


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────